# Author:Foru

# 字典
# 字典是无序的  字典是无序的  字典是无序的
person = {'name':'ford prefect',
          'Gender':'male',
          'occupation':'researcher',
          'home planet':'betelgeuse seven'}
print(person) # 字典是无序的，和列表不同；字典用大括号{},列表用中括号[]
print(person['name']) # 使用键来访问字典中的数据，键放在中括号之间

# 增加新的键/值对
person['age'] = 20 # 将一个新键（放在中括号里）赋一个对象来为字典增加新的键/值对
print(person)

## 创建字典的常用方法
## 1.1方法一：info = {"键key"："值value"},键值对键用逗号分隔，键和值对用冒号分隔
info = {
    "stu1801":"ZiQi",
    "stu1802":"XiaoFeng",
    "stu1803":"LiuYu"
}
print(info)

## 1.2方法二：info2 = dict(key=value)
info2 = dict(stu1801="ZiQi",stu1802="XiaoFeng",stu1803="LiuYu")
print(info2)

## 1.3方法三：
info3 = {}
info3["stu1801"]="ZiQi"
info3["stu1802"]="XiaoFeng"
info3["stu1803"]="LiuYu"
print(info3)

## 1.4方法四
### 语法：dict.fromkeys(seq[, value])
### 字典 fromkeys() 函数用于创建一个新字典，以序列 seq 中元素做字典的键，value 为字典所有键对应的初始值。
seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
print ("新的字典为 : %s" %  str(dict))

dict = dict.fromkeys(seq, 10)
print ("新的字典为 : %s" %  str(dict))


## 特性
## dict是无序的。key是唯一的,不可变性的。

## 2.1增加
info["stu1804"]="Zhichao"
print(info)

## 2.2修改
info["stu1804"]="foru"
print(info)

## 2.3删除
info.pop("stu1804") #标准删除
print(info)

del info["stu1801"] # 用del删除，删除键
print(info)

#del info 删除字典

info.popitem() # 随机删除
print(info)

## 2.4查找
people = {"name1":"foru","name2":"xiaocai","name3":"hhu"}
print("name1" in people) # 标准用发，存在为True

print(people.get("name1")) # 获取，输入前面的键

print(people["name1"]) # 同标准用法，但是输出是值对，如果一个key不存在，就报错，get不会，不存在只返回None

print(people.get("name5"))

## 注意点
### 1）不允许同一个键出现两次。创建时如果同一个键被赋值两次，后一个值会被记住
list.